#!c:/perl/bin/perl.exe
##########################################################################################################################
##### a script to add object permissions for Users of Wigan-Warriors.com
##########################################################################################################################

##########################################################################################################################
######  TODO list  #######################################################################################################
##########################################################################################################################
##########################################################################################################################

##########################################################################################################################
###### Bug list
##########################################################################################################################
##########################################################################################################################

##########################################################################################################################
# Includes
##########################################################################################################################

use lib qw(../cgi-bin);
use WiganRL;


use strict;
#use warnings;
local $SIG{__WARN__} = \&Carp::cluck;  #full call back trace

$|++;  #unbuffered

##########################################################################################################################
# get arguments
##########################################################################################################################

my $season_id= 10035;

##########################################################################################################################
# site setup and location variable declarations
##########################################################################################################################

my ($SITE_BASE_URL,$SITE_BASE_DIR,$CGI_BASE_URL,$CGI_BASE_DIR,$EMAIL_BASE_DIR,$MAIL_SMTP_SERVER);
my ($SEND_EMAILS,$ADMIN_NAME,$ADMIN_EMAIL,$MAIL_SCRIPT,$SITE_DATA_DIR);
my ($DATABASE_NAME,$DATABASE_SERVER,$DATABASE_USERNAME,$DATABASE_PASSWORD,$DATABASE_TYPE);

load_config('../cgi-bin/wiganrl.ini');

my $USER_UPLOADDIR= "$SITE_DATA_DIR/users";
my $USER_UPLOADURL= "data/users";
my $SEARCH_DATE_DAYS= 3;

#control main club of site with variable;
my $CLUB_ID= 10043;

##########################################################################################################################
# class and database setup
##########################################################################################################################

my $cgi= CGI->new();
$cgi->param('CGI_BASE_URL',$CGI_BASE_URL);
#print "Content-Type: text/html\n\n";
#print "Status: ".$cgi->param('status');

my $dbh= Diva::DB->new();
$dbh->set( {
	DATABASE_NAME       => $DATABASE_NAME,
	DATABASE_SERVER     => $DATABASE_SERVER,
	DATABASE_USERNAME   => $DATABASE_USERNAME,
	DATABASE_PASSWORD   => $DATABASE_PASSWORD,
	DATABASE_TYPE       => $DATABASE_TYPE,
	} );
$dbh->connect();
$dbh->debug(0);

#use Devel::Profile;
#use DBIx::Profile;
#$dbh->handle->setLogFile('c:/wwcom/v2.0/cgi-bin/db.log');

#ordering of these lines is important!
WiganRL::DataObject->dbh($dbh);
WiganRL::DataObject->cgi($cgi);

Diva::DataObject->init_contenttypes('WWCOM');  #loads contenttypes

WiganRL::DataObject->init_class();
WiganRL::Search->init_class();

WiganRL::Search->dbh($dbh);

#get competitions
my $s= WiganRL::Search->new;
$s->table('COMPETITION');
$s->where("FK_PARENT_ID = '$season_id'");
my $comps= $s->search;

for my $comp (@$comps) {
	print "Processing competition: ".$comp->id.": ".$comp->data('COMPETITION_NAME')."\n";
	#get matches with no squads setup
	my $s= WiganRL::Search->new;
	$s->clear;
	$s->table('MATCHSTATS');
	$s->where("(FK_HOMESQUAD_ID = 0 or FK_AWAYSQUAD_ID=0) and ".
		"FK_PARENT_ID=".$comp->id);
	my $matches= $s->search;

	for my $match (@$matches) {
		if (!$match->homesquad->loaded) {
			if ($match->homeclub->loaded) {
				#get a good squad
				my $s= WiganRL::Search->new;
				$s->clear;
				$s->table('SQUAD');
				$s->where("FK_SEASON_ID = '$season_id' and FK_CLUB_ID=".$match->homeclub->id);
				my $squad= $s->search;
				if ($#$squad>=0) {
					$dbh->update('MATCHSTATS',['FK_HOMESQUAD_ID'],[$squad->[0]->id],'FK_OBJECT_ID='.$match->id);
					print "Updated Home squad for match: ".$match->id."\n";
				} else {
					print "Couldn't find Home squad for match: ".$match->id.": ".$match->data('MATCH_NAME')."\n";
				}
			} else {
					print "No Home club for match: ".$match->id.": ".$match->data('MATCH_NAME')."\n";
			}
		}
		if (!$match->awaysquad->loaded) {
			if ($match->awayclub->loaded) {
				#get a good squad
				my $s= WiganRL::Search->new;
				$s->clear;
				$s->table('SQUAD');
				$s->where("FK_SEASON_ID = '$season_id' and FK_CLUB_ID=".$match->awayclub->id);
				my $squad= $s->search;
				if ($#$squad>=0) {
					$dbh->update('MATCHSTATS',['FK_AWAYSQUAD_ID'],[$squad->[0]->id],'FK_OBJECT_ID='.$match->id);
					print "Updated away squad for match: ".$match->id."\n";
				} else {
					print "Couldn't find away squad for match: ".$match->id.": ".$match->data('MATCH_NAME')."\n";
				}
			} else {
					print "No away club for match: ".$match->id.": ".$match->data('MATCH_NAME')."\n";
			}
		}	}

}
	
exit(0);


sub load_config {
	my $inifile= shift;
	
  ### get path for ini file
  my($pack,$file,$line,$sub) = caller;
  my($dev,$dirs,$id) = File::Spec->splitpath($file);
  my $IniFile = $dev . $dirs . $inifile;

  ### check file exists
  if (!(-e $IniFile)) {
	  die "$IniFile does not exist";
  }
  
  ### get contents of ini file
  use Config::IniFiles;
  my $cfg = new Config::IniFiles( -file => $IniFile ) 
  || die "Could not read $IniFile\n";

  ### Paths
	$SITE_BASE_URL= $cfg->val('paths', 'SITE_BASE_URL');
	$SITE_BASE_DIR= $cfg->val('paths', 'SITE_BASE_DIR');
	$SITE_DATA_DIR= $cfg->val('paths', 'SITE_DATA_DIR');
	$CGI_BASE_URL= $cfg->val('paths', 'CGI_BASE_URL');
	$CGI_BASE_DIR= $cfg->val('paths', 'CGI_BASE_DIR');
	
  ### emails
	$SEND_EMAILS= $cfg->val('emails', 'SEND_EMAILS');
	$EMAIL_BASE_DIR= $cfg->val('emails', 'EMAIL_BASE_DIR');
	$MAIL_SMTP_SERVER= $cfg->val('emails', 'MAIL_SMTP_SERVER');
	$ADMIN_NAME= $cfg->val('emails', 'ADMIN_NAME');
	$ADMIN_EMAIL= $cfg->val('emails', 'ADMIN_EMAIL');
	$MAIL_SCRIPT= $cfg->val('emails', 'MAIL_SCRIPT');

	### database
	$DATABASE_NAME= $cfg->val('database', 'DATABASE_NAME');
	$DATABASE_SERVER= $cfg->val('database', 'DATABASE_SERVER');
	$DATABASE_USERNAME= $cfg->val('database', 'DATABASE_USERNAME');
	$DATABASE_PASSWORD= $cfg->val('database', 'DATABASE_PASSWORD');
	$DATABASE_TYPE= $cfg->val('database', 'DATABASE_TYPE');
	return;
}



